#pragma once
#ifndef SMPPCANCELSM_HPP
#define SMPPCANCELSM_HPP

#include "SMPPHeader.hpp"

namespace smpp {
namespace pdu{

class SMPP_DLLPRFX CancelSM  : public Header{
	CoctetString _ServiceType;
	CoctetString _MessageId;
	quint8 _SourceAddrTON;
	quint8 _SourceAddrNPI;
	CoctetString _SourceAddr;
	quint8 _DestAddrTON;
	quint8 _DestAddrNPI;
	CoctetString _DestAddr;
public:
	CancelSM(const Header &nHeader = Header(),
		const CoctetString &nServiceType = "",
		const CoctetString &nMessageId = "",
		const quint8 nSourceAddrTON = 0,
		const quint8 nSourceAddrNPI = 0,
		const CoctetString &nSourceAddr = "",
		const quint8 nDestAddrTON = 0,
		const quint8 nDestAddrNPI = 0,
		const CoctetString &nDestAddr = "");

	CancelSM(const CancelSM &);

	void setServiceType(const CoctetString &);

	const CoctetString &getServiceType() const;

	void setMessageId(const CoctetString &);

	const CoctetString &getMessageId() const;

	void setSourceAddrTON(const quint8);

	const quint8 getSourceAddrTON() const;

	void setSourceAddrNPI(const quint8);

	const quint8 getSourceAddrNPI() const;

	void setSourceAddr(const CoctetString &);

	const CoctetString &getSourceAddr() const;

	void setDestAddrTON(const quint8);

	const quint8 getDestAddrTON() const;

	void setDestAddrNPI(const quint8);

	const quint8 getDestAddrNPI() const;

	void setDestAddr(const CoctetString &);

	const CoctetString &getDestAddr() const;

	void calcCommandLength();
};

}
}

#endif
